﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.IO;

namespace AtfutureCodeMachine
{
    public class IniFile
    {
        private string fileName;
        private string section = "atfuture";

        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(
           string lpAppName,// 指向包含 Section 名称的字符串地址 
           string lpKeyName,// 指向包含 Key 名称的字符串地址 
           string lpDefault,// 如果 Key 值没有找到，则返回缺省的字符串的地址 
           StringBuilder lpReturnedString,// 返回字符串的缓冲区地址 
           int nSize,// 缓冲区的长度 
           string lpFileName
           );
        [DllImport("kernel32")]
        private static extern bool WritePrivateProfileString(
           string lpAppName,// 指向包含 Section 名称的字符串地址 
           string lpKeyName,// 指向包含 Key 名称的字符串地址 
           string lpString,// 要写的字符串地址 
           string lpFileName
           );

        public IniFile()
        {
            //获取配置文件的路径
            fileName = Path.Combine(Application.StartupPath, "config.atfuture");
        }
       
        public string GetString(string key, string def)
        {
            //10K汉字，够多了吧。
            StringBuilder temp = new StringBuilder(1024*10);
            GetPrivateProfileString(section, key, def, temp, 1024 * 10, fileName);
            return temp.ToString();
        }
        
        public void WriteString(string key, string strVal)
        {
            WritePrivateProfileString(section, key, strVal, fileName);
        }

        public string key_namespace { get; set; }
        public string key_path { get; set; }
        public string key_user { get; set; }
        public string key_ver { get; set; }
        public string key_namecn { get; set; }

        public void Save()
        {
            WriteString("key_namespace", key_namespace);
            WriteString("key_path", key_path);
            WriteString("key_user", key_user);
            WriteString("key_ver", key_ver);
            WriteString("key_namecn", key_namecn);
        }

        public void Load()
        {
            key_namespace = GetString("key_namespace", "");
            key_path = GetString("key_path", "");
            key_user = GetString("key_user", "1");
            key_ver = GetString("key_ver", "");
            key_namecn = GetString("key_namecn", "1");
        }
    }
}
